// Package application @author dingrui @since 2021/11/25
package application

import (
	"github.com/kataras/iris/v12"
)

//
//  App
//  @Description: web后端
//
type App struct {
	*iris.Application        // 继承
	appName           string // 应用名称
}

//  抽象后端服务配置器
type AppConfigurator func(app *App)

//
//  New
//  @Description: 创建web应用
//  @param appName
//  @param cfgs
//  @return application
//
func New(appName string, cfgs ...AppConfigurator) (app *App) {
	var (
		cfg AppConfigurator
	)
	app = &App{
		Application: iris.New(),
		appName:     appName,
	}
	// 调用配置器
	for _, cfg = range cfgs {
		cfg(app)
	}
	return
}

func (a *App) Start(addr string, cfgs ...iris.Configurator) {
	_ = a.Run(iris.Addr(addr), cfgs...)
}
